package com.company.pangu.aliyun.risk.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * <p>阿里云图片检测（同步）</p >
 * https://help.aliyun.com/document_detail/70292.html?spm=5176.12188934.1247881.2.251272b4AUDwrX
 *
 * @author Nikola Tesla
 * @version 1.0
 * @date 2021/4/6
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RiskImageSyncScanResponse {

    /**
     * 错误码，和HTTP状态码一致。
     */
    private int code;

    /**
     * 请求信息的响应信息。
     */
    private String msg;

    private String requestId;

    private List<TaskRes> data;


    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static final class TaskRes {

        private int code;

        private String msg;

        /**
         * 检测任务的ID。
         */
        private String taskId;

        /**
         * 检测对象的URL。
         */
        private String url;

        /**
         * 返回结果。调用成功时（code=200），返回结果中包含一个或多个元素。
         */
        private List<Result> results;

        @Data
        @Builder
        @NoArgsConstructor
        @AllArgsConstructor
        public static final class Result {

            /**
             * 检测结果的分类。不同检测场景的结果分类不同，具体如下：
             * 图片智能鉴黄（porn）结果分类：
             * normal：正常
             * sexy：性感
             * porn：色情
             * 图片暴恐涉政（terrorism）结果分类：
             * normal：正常
             * bloody：血腥
             * explosion：爆炸烟光
             * outfit：特殊装束
             * logo：特殊标识
             * weapon：武器
             * politics：涉政
             * violence ：打斗
             * crowd：聚众
             * parade：游行
             * carcrash：车祸现场
             * flag：旗帜
             * location：地标
             * others：其他
             * 图文违规（ad）结果分类：
             * 说明 默认返回normal或ad。如果您需要其他label，请提交工单联系我们进行配置。
             * normal：正常
             * ad：其他广告
             * politics：文字含涉政内容
             * porn：文字含涉黄内容
             * abuse：文字含辱骂内容
             * terrorism：文字含暴恐内容
             * contraband：文字含违禁内容
             * spam：文字含其他垃圾内容
             * npx：牛皮癣广告
             * qrcode：含二维码
             * programCode：含小程序码
             * 图片二维码（qrcode）结果分类：
             * 说明 默认不识别小程序码。如果需要识别小程序码，请提交工单联系我们进行配置。
             * normal：正常
             * qrcode：含二维码
             * programCode：含小程序码
             * 图片不良场景（live）结果分类：
             * normal：正常
             * meaningless：图片中无内容（例如，黑屏、白屏）
             * PIP：画中画
             * smoking：吸烟
             * drivelive：车内直播
             * 图片logo（logo）结果分类：
             * normal：正常
             * TV：含受管控的logo
             * trademark：含商标
             */
            private String label;

            /**
             * 置信度分数，取值范围：0（表示置信度最低）~100（表示置信度最高）。
             * 如果suggestion为pass，则置信度越高，表示内容正常的可能性越高；如果suggestion为review或block，则置信度越高，表示内容违规的可能性越高。
             */
            private double rate;

            /**
             * 图片检测场景，和调用请求中的场景对应。取值：
             * porn：图片智能鉴黄
             * terrorism：图片暴恐涉政
             * ad：图文违规
             * qrcode：图片二维码
             * live：图片不良场景
             * logo：图片logo
             */
            private String scene;

            /**
             * 建议您执行的后续操作。取值：
             * pass：结果正常，无需进行其余操作。
             * review：结果不确定，需要进行人工审核。
             * block：结果违规，建议直接删除或者限制公开。
             */
            private String suggestion;
        }
    }

}
